// 非空校验, ts 考虑的是安全

let ele: HTMLElement | null = document.getElementById("app"); // 我是知道这个东西使用的

// ! 标识的是非空断言 ts里面的
// ele!.style.background = 'red'; // 这个东西一定不为空， 如果为空那就得自己承担错误，不用ts来检验了

// 断言 类型断言 只能断言已经存在的值

(ele as HTMLElement).style.background = "red"; // 断言后后果自理 ，不要ts的类型校验了
(<HTMLElement>ele).style.background = "red"; // 在使用jsx的时候还是使用as语法

// 考虑采用type关键字来自定义类型
// type是ts中用的时候 多数会配合联合类型来使用
type MyType1 = string | number | boolean | object;
type MyType2 = 'a' | 'b' | 'c' | 'd'; // 表示myType2 只能赋值成a,b,cd 中的4个
let n: MyType2 = 'b'; // 联合类型会根据赋值的值推导出具体的类型






// 不建议使用双重断言，会改变原有类型， 但是好处是可以断言成任何类型
// (ele as any as string).style.background = 'red'; // 断言后后果自理 ，不要ts的类型校验了

// -------------------
// js 本身语法
// ele?.style; // 类似于判断 如果有才能取值没有就直接返回了  如果需要转义低级语法 需要babel

// ?? js预算福
// console.log(null ?? 1); // 只要不是null或者undefined这个值就是ok的 解决的是||的问题

export {};
